package day0401;

import java.util.*;
import java.util.stream.Collectors;

public class HuaDongChuangKou20 {
    /**
     * 20.给你一个整数数组 nums，有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的
     * k 个数字。滑动窗口每次只向右移动一位。
     * <p>
     * 返回 滑动窗口中的最大值 。
     * <p>
     * 示例 1：
     * <p>
     * 输入：nums = [1,3,-1,-3,5,3,6,7], k = 3
     *
     * 输出：[3,3,5,5,6,7]
     * 解释：
     * 滑动窗口的位置                最大值
     * ---------------               -----
     * [1  3  -1] -3  5  3  6  7       3
     * 1 [3  -1  -3] 5  3  6  7       3
     * 1  3 [-1  -3  5] 3  6  7       5
     * 1  3  -1 [-3  5  3] 6  7       5
     * 1  3  -1  -3 [5  3  6] 7       6
     * 1  3  -1  -3  5 [3  6  7]      7
     * 示例 2：
     * <p>
     * 输入：nums = [1], k = 1
     * 输出：[1]
     */
    public static void main(String[] args) {
        // 暴力解法：会超时，正确方法是使用双端队列。leetcode
        Scanner sc = new Scanner(System.in);
        while (sc.hasNextLine()) {
            List<Integer> list = Arrays.stream(sc.nextLine().split(",")).map(Integer::parseInt).collect(Collectors.toList());
            int k = Integer.parseInt(sc.nextLine());
            int max = Integer.MIN_VALUE;
            StringBuilder sb = new StringBuilder();
            for (int i = 0; i < list.size() - k + 1; i++) {
                for (int j = 0; j < k; j++) {
                    max = Math.max(max, list.get(i + j));
                }
                sb.append(max).append(",");
                max = Integer.MIN_VALUE;
            }
            String[] strings = sb.substring(0, sb.length() - 1).split(",");
            int[] intArray = new int[strings.length];
            for (int i = 0; i < strings.length; i++) {
                intArray[i] = Integer.parseInt(strings[i]);
            }
            System.out.println(sb.substring(0,sb.length()-1));

        }
    }
}
